<?php
/**
 * Modelo CRUD de usuários
 * @author Emanuel Melo e Renato Lenz @ PC4 Team
 */
class PC4_Crud_Newsletter_UsuarioCliente extends PC4_Crud_Abstrato_Rastreado {
	
	function __construct($tabela = 'usuarios') {
		parent::__construct($tabela);
	}
	
	/**
	 * Verifica os campos estão corretos
	 * @param array $campos
	 * @param int $id
	 * @return array com mensagens de erros
	 */
	function valida($campos, $id=0) {
		$erros = array();
		$q = $this->db->get_where($this->tabela, "(id_clientes = '{$campos["id_clientes"]}' AND login = '{$campos["login"]}') AND id <> $id", 1);
				
		if ($q->num_rows() > 0) {
			$erros["id_clientes"] = "Este usuário já existe em nossa base de dados.";
		}
		if (trim($campos['senha']) == md5('') && $id == 0) {
			$erros[] = "Sua senha não pode estar em branco.";
		}
		
		return $erros;
	}
	
	function insere($umRegistro){
		$umRegistro["senha"] = md5($umRegistro["senha"]);
		return parent::insere($umRegistro);
	}

	/**
	 * Altera o modo como os registros aparecerão para o usuário
	 * @param object $registro
	 * @return object de registros alterados
	 */
	function trataRegistro($registro) {
		$registro->ddd_telefone = substr($registro->telefone, 0, 2);
		$registro->telefone = substr($registro->telefone, 2);
		
		return $registro;
	}
	
	/**
	 * Executa uma consulta retornando as informações sobre os créditos do cliente por paginação
	 * @param int $pagina
	 * @param int $registros
	 * @return array com registros do cliente
	 */
	function lista($pagina = 1, $limite = 20) {
		$this->db->select("u.*, c.nome_fantasia");
		$this->db->join("clientes c", "c.id = u.id_clientes", "inner");
		$this->db->where("u.role <> 'admin'");
		$this->db->order_by("c.nome_fantasia");
		$rs = parent::lista($pagina, $limite);
		return $rs;
	}
	
	/**
	 * 
	 * @param array $umRegistro
	 * @param int $id
	 * @return devolve um array de erros (nomeCampo/erro) para cada campo que não passou da validação 
	 */
	function edita($umRegistro, $id) {
		if ($umRegistro["senha"]) $umRegistro["senha"] = md5($umRegistro["senha"]);
		return parent::edita($umRegistro, $id);
	}
	
	/**
	 * Ativa e Desativa um registro
	 * @param int $id
	 * @param array $set
	 * @return true - ativado, false - erro
	 */
	function ativaDesativa($id, $set) {
		$resultado = parent::ativaDesativa($id, $set);
		$r = $this->ve($id);
//		$this->session->set_userdata('tentativa_login_' . $r->login, 0);
		return $resultado;
	}
	
	/**
	 * Apaga todos os destinatarios de um cliente
	 * @param int $id_cliente
	 * @return int Linhas afetadas
	 */
	function apagaPorCliente($id_cliente) {
		$this->db->delete($this->tabela, "id_clientes = '$id_cliente'");
		
		return $this->db->affected_rows();
	}
		
}
?>